The complexity of a computer system tends to grow as its size and capabilities increase and the exhaustive testing of a complex system is a difficult and time consuming task. In modern computer systems, the "intelligence" and the greatest complexity is in the programs which control the computer hardware to perform desired functions. The programs are customarily divided into two levels called operating system programs and application programs The operating system programs directly control a number of specialized system functions; the application programs define the functions to be carried out by the system and control the system through the operating system programs. The computer system hardware and operating system generally are designed by the supplier of the computer system. Application programs, however, may be designed by the computer purchaser for special applications or by third parties who develop application programs to perform certain functions, e.g., a spread sheet program for use in accounting applications.
Testing of the design of the hardware and the operating system is done when new hardware or a new operating system is introduced. App1ication programs may consist of a complex set of programs which enable the computer system to execute complicated tasks for a variety of applications. New or modified application programs, which interact with existing programs, may be added from time to time. Furthermore, the application programs may have options that interact with a variety of complex input/output devices. It is of utmost importance to the proper operation of a computer system that the operating system and application programs be tested properly.
One known scheme of testing programs is to load them into a computer and to exercise the programs and observe the results by means of the computer's standard input/output facilities. However, to exhaustively test a set of complex programs using the normal user interface is a time consuming task. Furthermore, such testing requires that a complete complement of input/output facilities be connected to the system.
Another possible approach is to test the programs by means of an auxiliary processor connected to the target computer which emulates its input/output terminals. A computer normally has a number of input/output ports to which input/output terminals are connected. The auxiliary processor may be connected to ports of the target computer instead of terminals to provide test input data to the computer and to collect resulting output data. The collected output data may be stored in a data file in the auxiliary processor as it is received. The target computer output data can be examined to detect specified data patterns which indicate, for example, that a task has been completed in response to specific input data. The received data can be examined in the auxiliary processor by searching the data files where the data has been stored. However, data cannot be entered in a file while it is being searched. Consequently, any data appearing on the output port of the target computer during the search will be lost, hampering adequate testing.
Many modern computers use video display terminals having several so-called windows Data may be displayed in each window which is unrelated to data displayed in the other windows. The multiwindowed display terminal is customarily connected to a single input/output port and window identifying information is transmitted with the data identifying the appropriate window. Emulation schemes whereby data is stored as it is received from computer input/output ports do not differentiate between data belonging to different windows of a multiwindowed display terminal.